#include <iostream>
#include <cmath>

using namespace std;

const int N = 110;
const double eps = 1e-7;
int n;
double a[N][N];
bool zero(double x)
{
    return fabs(x) < eps;
}

int guass()
{
    for(int i = 1; i <= n; i++)
    {
        // 确定主元
        int aim = i;
        for(int j = 1; j <= n; j++)
        {
            if(j < i && !zero(a[j][j])) continue;
            if(fabs(a[j][i]) > fabs(a[aim][i])) aim = j;
        }
        // 判断是否为自由元
        if(zero(a[aim][i])) return 0;

        // 交换aim 和 i 行
        for(int j = 1; j <= n + 1; j++) swap(a[aim][j], a[i][j]);

        // 把第i行变为1
        for(int j = n + 1; j >= i; j--) a[i][j] /= a[i][i];

        // 消元
        for(int j = 1; j <= n; j++)
        {
            if(i == j) continue;
            double t = a[j][i];
            for(int k = i; k <= n + 1; k++) a[j][k] -= a[i][k] * t;
        }
    }
    return 1;
}

int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= n + 1; j++)
        {
            cin >> a[i][j];
        }
    }
    int ret = guass();

    if(ret)
    {
        for(int i = 1; i <= n; i++) 
        {
            printf("%.2lf \n", a[i][n + 1]);
        }
    }
    else cout << "No Solution" << endl; 
    return 0;
}